home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 014 / libtools.arc / SLOPRT.AQM / SLOPRT.ASM
Encoding:
Assembly Source File  |  1984-08-31  |  2.0 KB  |  51 lines

  1.    page ,80
  2. ;Program to slow down the printer bios code. It sets up interrupt
  3. ;10H so that it goes here first for a delay.
  4. zpage segment at 0
  5. ;segment at location 0
  6.      dd  23 dup(?)
  7. prtinto  dw (?)         ;offset for print interrupt
  8. prtints  dw (?)          ;label for print interrupt
  9. zpage  ends
  10. CODE   SEGMENT PUBLIC
  11. segp   db   ?
  12.        org   100h         ;space past prefix
  13.       ASSUME  CS:CODE,ES:ZPAGE,DS:CODE,SS:CODE
  14. start proc  far
  15.       jmp   main         ;goto main part of code
  16. strtmove label byte         ;start of moved code
  17. origmove equ 20h        ;new loc of moved code
  18. omc   equ   strtmove-(segp+origmove)
  19. old17    dd (?)           ;old print vector
  20.     org  $-4       ;overlay dw with two words
  21. old17off dw (?)        ;offset value for old interrupt
  22. old17seg dw (?)        ;segment value old interrupt
  23. intentry  label near   ;label for interrupt 17
  24.       push cx           ;save cx value
  25.       mov  cx,80h      ;set delay value
  26. loop: loop loop          ;take delay
  27.       pop cx           ;restore cx value
  28.       jmp    cs:old17-omc         ;goto original print code
  29. endmove  equ   $         ;end of moved code
  30. main  label near         ;main part of code
  31.       mov  ax,0         ;set zero value
  32.       mov  es,ax        ;point to low storage
  33.       mov  ax,prtints        ;save the...
  34.       mov  old17seg,ax        ;..old segment value
  35.       mov  ax,prtinto        ;save the..
  36.       mov  old17off,ax        ;..old offset value
  37.       mov  prtints,cs        ;move current segment to new segment
  38.       mov  prtinto,offset intentry-strtmove+origmove ;set new offset
  39.       mov  ax,ds        ;reset .....
  40.       mov  es,ax         ;...extra segment
  41.       mov  di,origmove        ;set target location
  42.       mov  si,offset strtmove ;set origin location
  43.       mov  cx,offset endmove-strtmove ;set length
  44.       cld            ;set forward direction
  45.       rep movsb         ;move the code
  46.       mov dx,offset endmove-strtmove+origmove ; set length
  47.       int  27h            ;return but stay resident
  48. start  endp
  49. CODE ENDS
  50.       END start
  51.